#水果成篮
from typing import List
from collections import defaultdict
class Solution:
    def totalFruit(self, fruits: List[int]) -> int:
        l,r=0,0
        res=0
        classMap=defaultdict(int)
        classCnt=0
        
        while r<len(fruits):
#检查当前水果 fruits[r] 在 classMap 中的数量是否为 0。
# 如果是 0，说明这是窗口中的新水果，classCnt（窗口内不同水果的种类数）需要加 1。
            if classMap[fruits[r]]==0:
                classCnt+=1
#将当前水果 fruits[j] 在 classMap 中的数量加 1，表示窗口中这种水果的数量增加。
            classMap[fruits[r]]+=1

            while classCnt>2:
                if classMap[fruits[l]]==1:
#检查当前左边界 l指向的水果在 classMap 中的数量是否为 1。如果是 1，
#说明这种水果是窗口中唯一的一个，移除后 classCnt（窗口内不同水果的种类数）需要减 1。
                    classCnt-=1
                classMap[fruits[l]]-=1
                l+=1

            res=max(res,r-l+1)
            r+=1
        return res
